﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using EFong.Contract;
using System.Xml.Linq;

namespace EFong.ServicesInterface
{
    [ServiceContract]
    public interface IBaseService
    {
        [OperationContract]
        ServiceResult<List<Currency>> GetAllCurrency();

        [OperationContract]
        ServiceResult<Currency> GetCNYCurrency();

        [OperationContract]
        ServiceResult UpdateExchangeRate(List<Currency> currencyList);

        [OperationContract]
        ServiceResult<User> Login(string name , string password);

        [OperationContract]
        ServiceResult<List<User>> GetAllUser();

        [OperationContract]
        ServiceResult<List<User>> GetEffUser();

        [OperationContract]
        ServiceResult NewUser(User user);

        [OperationContract]
        ServiceResult ModifyUserPassword(string userName,string oldPassword , string newPassword);

        [OperationContract]
        ServiceResult UpdateUserList(List<User> userList);

        [OperationContract]
        ServiceResult<List<Role>> GetAllRole();

        [OperationContract]
        ServiceResult NewRole(Role role);

        [OperationContract]
        ServiceResult UpdateRoleList(List<Role> roleList);

        [OperationContract]
        ServiceResult<List<HotelLevel>> GetAllHotelLevel();

        [OperationContract]
        ServiceResult<List<AuthorizedItem>> GetAllAuthorizedItem();

        [OperationContract]
        ServiceResult<List<CustomerHotelIntergralRate>> GetOriginalHotelIntergralRateList();

        [OperationContract]
        ServiceResult<List<WebUser>> GetAvailableWebUserList();

        [OperationContract]
        ServiceResult<DateTime> GetDate();

        [OperationContract]
        ServiceResult<XElement> ExportData(DateTime dateTime);

        [OperationContract]
        ServiceResult ImportData(XElement data);

        [OperationContract]
        ServiceResult<DateTime> GetLatestExportDate();
    }
}
